#include <iostream>
#include <vector>

// class Base final {};
// class Derive : public Base {};

class Elem {
public:
    Elem() = default;
    Elem(const Elem&) { std::cout << "Elem(const Elem&)" << std::endl; }
};

class Widget {
private:
    std::vector<Elem> Elems;

public:
    Widget() { Elems.resize(10); }

public:
    std::vector<Elem>& Value() & { return Elems; }
    std::vector<Elem>&& Value() && { return std::move(Elems); }
    //std::vector<Elem> Value() && { return std::move(Elems); }
};

Widget MakeWidget() {
    return Widget();
}

int main() {
    Widget widget;
    //auto value = widget.Value();

    auto value1 = MakeWidget().Value();
}